//引入路由器
import router from "@/router";
//引入仓库
import store from "@/store";

//添加前置守卫
let whiteList = ['/trade','/pay','/patsuccess','/center','/center/myorder','/center/teamorder']
//解决第一个问题:token
//登录、注册、首页、搜素、详情、购物车、加入购物车成功
//未登录:顶部七个路由可以随便进
//登录:登录、注册不能在访问，其余五个可以进入
//解决第二个问题:用户信息问题

router.beforeEach(async (to, from, next) => {
  let hasToken = store.state.user.token;
  let nickName = store.state.user.nickNam;
  if (hasToken) {
    //如果登录成功,不能去登录注册页面
    //如果用户信息放行，如果没有用户信息，通知vuex发请求，获取用户信息以后再放行
    if (to.path == "/login" || to.path == "/register") {
      next("/home");
    } else {
      //登录成功以后,判断有没有用户信息
      //如果用户信息放行，如果没有用户信息，通知vuex发请求，获取用户信息以后再放行
      if (nickName) {
        //如果有用户信息放行
        next();
      } else {
        try {
          //没有用户信息发请求获取用户信息以后再放行
          await store.dispatch("getUserInfo");
          next();
        } catch (error) {
          //用户登录(token),发请求获取用户信息失败[token过期了!!!]
          //先清空前端项目本地数据
          await store.dispatch("logout");
          //让用户再次登录，获取新的token
          next('/login');
        }
      }
    }
  }else{
     //决定用户未登录
    if( whiteList.includes(to.path)){
      //next类似于导航:
      next('/login?redirect='+to.path);
    }else{
      next();
    }
  }
});
